﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SIPDTO;

namespace SIP
{
    public partial class Canton : System.Web.UI.Page
    {
        #region ** Declaración de variables

        private string _valparametro = "Parametro Canton";
        SIPBLL.SIPBLL _bll = new SIPBLL.SIPBLL();
        dtoCanton  _dtocanton = new dtoCanton();
        dtoError _resp = new dtoError();
        dtoParametros _dtoparametro = new dtoParametros();
        List<dtoParametros> _dtparametro = new List<dtoParametros>();
        List<dtoProvincias> _dtprovincia = new List<dtoProvincias>();
        List<dtoCanton> _dtcanton = new List<dtoCanton>();

        #endregion

        protected void Page_Load(object sender, EventArgs e)
        {

            if (!IsPostBack)
            {
                ObtenerProvincia();

                if (Convert.ToBoolean(Session["Crear"]) == true)
                {
                    ActivarBotones();
                    // método para obtener de una tabla el consecutivo de canton.
                    lblcodigo.Text = Convert.ToString(ObtenerParametro());
                    CleanControl(this.Controls);

                }
                else
                {
                    BuscarCanton();
                }
            }
        }

        protected void Registrar(object sender, EventArgs e)
        {
            try
            {
                if (Page.IsValid == true)
                {
                    if (Convert.ToBoolean(Session["Crear"]) == true)
                    {
                        if ((Convert.ToInt16((ddlProvincia).SelectedValue) != 0))
                        {
                            _dtocanton.Identificacion = Convert.ToInt16(lblcodigo.Text);
                            _dtocanton.Descripcion = this.txtNombre.Text;
                            _dtocanton.Provincia = Convert.ToInt16(ddlProvincia.SelectedValue);
                            if (chkactivo.Checked == true)
                            {
                                _dtocanton.Estado = true;
                            }
                            else
                            {
                                _dtocanton.Estado = false;
                            }
                            // se crea la parroquia en la tabla Parroquia
                            _resp = _bll.AceptarCanton(_dtocanton, 1);
                            CleanControl(this.Controls);
                            if (_resp.IdError == 100)
                            {
                                WebMsgBox.Show(_resp.Mensaje);
                                ActualizaParametro();// Se actualiza el parametro del consecutivo del canton
                                lblcodigo.Text = Convert.ToString(ObtenerParametro());

                            }
                            else
                            {
                                WebMsgBox.Show(_resp.Mensaje);

                            }
                        }
                        else { WebMsgBox.Show("Exiten campos pendientes de completar, por favor verifique la Provincia "); }
                    }
                    else // actualiza la información de la parroquia
                    {
                        _dtocanton.Identificacion = Convert.ToInt16(lblcodigo.Text);
                        _dtocanton.Descripcion = this.txtNombre.Text;
                        if (chkactivo.Checked == true)
                        {
                            _dtocanton.Estado = true;
                        }
                        else
                        {
                            _dtocanton.Estado = false;
                        }
                        // se modifica la parroquia en la tabla Parroquia
                        _resp = _bll.AceptarCanton(_dtocanton,2);

                        if (_resp.IdError == 100)
                        {
                            WebMsgBox.Show(_resp.Mensaje);
                            Response.Redirect("ListadoCanton.aspx");
                        }
                        else
                        {
                            WebMsgBox.Show(_resp.Mensaje);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _resp.IdError = -100;
                _resp.Mensaje = ex.Message.ToString();
                WebMsgBox.Show(_resp.Mensaje);
            }
        }

       private void BuscarCanton() //Obtiene la información del canton y lo carga en pantalla
        {
            DesactivarTodosBotones();
            _dtocanton.Identificacion = Convert.ToInt16(Session["idCanton"]);
            _dtcanton = _bll.ObtenerCanton(_dtocanton);
            lblcodigo.Text = Convert.ToString(_dtcanton[0].Identificacion);
            txtNombre.Text = _dtcanton[0].Descripcion;
            ddlProvincia.SelectedValue = Convert.ToString(_dtcanton[0].Provincia);
            if (Convert.ToBoolean(_dtcanton[0].Estado) == true)
            {
                chkactivo.Checked = true;
            }
            else
            {
                chkactivo.Checked = false;
            }

        }

        protected void Cancelar(object sender, EventArgs e)
        {

            Response.Redirect("ListadoCanton.aspx"); // Retorna al listado de cantones
        }

        #region ** Consecutivo Canton

        public int ObtenerParametro()
        {

            _dtparametro = _bll.ObtenerParametro(_valparametro);
            if (Convert.ToInt32(_dtparametro[0].Valor) == 0) //valida si el parametro es 0 y lo inicializa a 1
            { _dtocanton.Identificacion = Convert.ToInt32(_dtparametro[0].Valor) + 1; }
            else
            {
                _dtocanton.Identificacion = Convert.ToInt32(_dtparametro[0].Valor + 1);
            }
            return _dtocanton.Identificacion;

        }

        public void ActualizaParametro()
        {
            //Actualizar la tabla Parametro
            _dtparametro = _bll.ObtenerParametro(_valparametro);
            _dtoparametro.IdParametro = _dtparametro[0].IdParametro;
            _dtoparametro.Descripcion = _dtparametro[0].Descripcion;
            _dtoparametro.Valor = _dtparametro[0].Valor + 1;
            _resp = _bll.RegistrarParametro(_dtoparametro,2);
        }

        #endregion

        #region ** Validaciones

        public void CleanControl(ControlCollection controles)
        {
            foreach (Control control in controles)
            {
                if (control is TextBox)
                    ((TextBox)control).Text = string.Empty;
                else if (control is DropDownList)
                    ((DropDownList)control).ClearSelection();
                else if (control is RadioButtonList)
                    ((RadioButtonList)control).ClearSelection();
                else if (control is CheckBoxList)
                    ((CheckBoxList)control).ClearSelection();
                else if (control is RadioButton)
                    ((RadioButton)control).Checked = false;
                else if (control is CheckBox)
                    ((CheckBox)control).Checked = false;
                else if (control.HasControls())   //Esta linea detécta un Control que contenga otros Controles                    
                    //Así ningún control se quedará sin ser limpiado.                   
                    CleanControl(control.Controls);
            }
        }

        public void ObtenerProvincia()
        {
            _dtprovincia = _bll.ObtenerProvincia();
            ddlProvincia.DataSource = _dtprovincia;
            ddlProvincia.DataValueField = "Identificacion";
            ddlProvincia.DataTextField = "Descripcion";
            ddlProvincia.DataBind();
            ddlProvincia.Items.Insert(0, new ListItem("Seleccionar Provincia", "0"));
        }

        public void ActivarBotones()
        {
            ddlProvincia.Enabled = true;
            txtNombre.Enabled = true;
            chkactivo.Enabled = true;

        }

        public void DesactivarTodosBotones()
        {
            ddlProvincia.Enabled = false;
            txtNombre.Enabled = true;
            chkactivo.Enabled = true;
        }

        #endregion


    }


    }
